from typing import Optional
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from pydantic import SecretStr


def get_bailian_llm(model: str = "qwen-plus", api_key: Optional[str] = None) -> ChatOpenAI:
    """返回一个配置好的百炼 ChatOpenAI 客户端。

    优先使用入参 api_key，其次读取环境变量 DASHSCOPE_API_KEY。
    """
    load_dotenv()
    key = api_key or os.getenv("DASHSCOPE_API_KEY")
    if not key:
        raise RuntimeError("未找到 DASHSCOPE_API_KEY，请在 .env 中配置或传入 api_key 参数")

    return ChatOpenAI(
        model=model,
        api_key=SecretStr(key),
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
        streaming= True,
    )


__all__ = ["get_bailian_llm"]

if __name__ == "__main__":
    print(get_bailian_llm())
